#include "get_tic_info.h"

 
/****************************************
* 函数介绍   :将token写入token.txt
* 输入参数   : 
* 返回值     :
*****************************************/
void WriteToken(string str)
{
    std::ofstream write_token;     
    write_token.open("token.txt", std::ios::out);//将token保存在token.txt    
    if(!write_token)
    {
        std::cout<<"Open File Fail."<<std::endl;
        exit(1);
    }
      write_token << str;
      write_token.close();
}
/****************************************
* 函数介绍   :从token.txt读取token
* 输入参数   : 
* 返回值     :
*****************************************/
string  ReadToken(void)
{
    std::ifstream read_token;
    std::string str_token;
    read_token.open("token.txt",std::ios::in);
    if(!read_token)
     {
       std::cout<<"Open File Fail."<<std::endl;
       exit(1);
     }
   read_token >>str_token;
   read_token.close(); 
   
    return  str_token;
}

/****************************************
* 函数介绍   :获取开机时间
* 输入参数   : 
* 返回值     :
*****************************************/
string get_poweron_time()
{
    struct sysinfo info;
    time_t cur_time;
    time_t boot_time;
    struct tm * p_tm = NULL;
 
    if (sysinfo(&info))
        return "";
 
    time(&cur_time);
    
    if (cur_time > info.uptime)
        boot_time = cur_time - info.uptime;
    else
        boot_time = info.uptime - cur_time ;
 
    tm* ptm = localtime(&boot_time);
 
    std::stringstream ss;
    // ss << ptm->tm_year + 1900 <<"-" <<std::setfill('0') << std::setw(2) << ptm->tm_mon <<std::setfill('0')<<"-" 
    //    << std::setw(2) << std::setfill('0') << std::setw(2) <<ptm->tm_mday<<"-" << std::setfill('0') << std::setw(2) 
    //    <<ptm->tm_hour<<"-" <<std::setfill('0') << std::setw(2) <<  ptm->tm_min;
    ss << ptm->tm_year + 1900 <<"-"<< ptm->tm_mon <<"-"<<ptm->tm_mday<<"-" <<ptm->tm_hour<<"-" << ptm->tm_min;
    std::string ret;
    ss >> ret;
 
    return ret;
};


/****************************************
* 函数介绍   :获取地图信息
* 输入参数   :
* 返回值     :
*****************************************/
Json Get_Map_Info(void)
{    
  httplib::Client cli("localhost", 1800);
  auto res = cli.Get("/tic/data/command?type=1");

  if (res && res->status == 200) 
  {
    //  std::cout << res->body << std::endl;
     std::string err;
     Json js_data=Json::parse(res->body.c_str(),err);//
    //  std::cout << "rc_msg="<<data.dump()<< std::endl;

    return js_data; 
  }
    return 0;
};
/****************************************
* 函数介绍   :获取任务查询信息
* 输入参数   :  
* 返回值     :
*****************************************/
Json Get_Task_Info(void)
{  
  httplib::Client cli("localhost", 1800);
  auto res = cli.Get("/tic/data/command?type=2");
  if (res && res->status == 200) 
  {
    //  std::cout << res->body << std::endl;
     std::string err;
     Json js_data=Json::parse(res->body.c_str(),err);//
    //  std::cout << "rc_msg="<<data.dump()<< std::endl;

    return js_data;  
  }
    return 0;
};

/****************************************
* 函数介绍   :获取设备反馈状态与位置信息
* 输入参数   :     
* 返回值     :
*****************************************/
Json Get_Status_Gps_Info(void )
{  
  httplib::Client cli("localhost", 1800);
  auto res = cli.Get("/tic/data/command?type=3");
  if (res && res->status == 200) 
  {
    //  std::cout << res->body << std::endl;
     std::string err;
     Json js_data=Json::parse(res->body.c_str(),err);//
    //  std::cout << "rc_msg="<<data.dump()<< std::endl;

    return js_data;   
  }
    return 0;
};
/****************************************
* 函数介绍   :获取设备监控统计信息
* 输入参数   :    
* 返回值     :
*****************************************/
Json Get_Monitor_Info(void )
{  
  httplib::Client cli("localhost", 1800);
  auto res = cli.Get("/tic/data/command?type=4");
  if (res && res->status == 200) 
  {
    //  std::cout << res->body << std::endl;
     std::string err;
     Json js_data=Json::parse(res->body.c_str(),err);//
    //  std::cout << "rc_msg="<<data.dump()<< std::endl;

    return js_data;  
  }
    return 0;
};